package org.dromara.demo.controller;

import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.mail.utils.MailUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.File;



/**
 * @Author 刘武贵
 * @Date 2024/8/15 22:00
 * @Description 功能描述：邮件发送案例
 */
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/demo/mail")
public class MailController {

    /**
     * 发送邮件 使用GET请求发送简单邮件
     * 为什么选择GET方法：此处用于简单邮件发送操作，GET方法符合此处不修改数据的需求
     * 使用MailUtils发送邮件的原因：通过工具类封装邮件发送逻辑，提高代码的复用性和可维护性
     *
     * @param to      接收人
     * @param subject 标题
     * @param text    内容
     * @return R<Void> 返回一个结果对象，表示邮件发送操作的结果
     */
    @GetMapping("/sendSimpleMessage")
    public R<Void> sendSimpleMessage(String to, String subject, String text) {
        MailUtils.sendText(to, subject, text);
        return R.ok();
    }

    /**
     * 发送邮件（带附件）
     * 此方法调用MailUtils.sendText方法，向指定的收件人发送一封带附件的邮件
     * 它构造一个邮件发送请求，包括收件人、主题、正文内容和附件文件路径
     * 发送完成后，返回一个表示操作成功的结果对象
     *
     * @param to       接收人
     * @param subject  标题
     * @param text     内容
     * @param filePath 附件路径
     */
    @GetMapping("/sendMessageWithAttachment")
    public R<Void> sendMessageWithAttachment(String to, String subject, String text, String filePath) {
        MailUtils.sendText(to, subject, text, new File(filePath));
        return R.ok();
    }

}
